This invention relates to computer graphics display systems. More particularly, the invention relates to a single logical screen display supported by multiple remote computer systems.
Computer graphics displays that have very large sizes and high resolutions are useful in a variety of applications. For example, such displays can be used to create immersive environments in which viewers are surrounded by the display. Such displays are also useful when large amounts of data must be viewable on one large screen, such as in stock market applications, large process control applications and the like. Frequently, in order to provide such a large display with adequately high resolution, a composite screen must be constructed using numerous separate physical display devices such as CRT-type monitors. If the composite screen is to be used interactively, then suitable control mechanisms must also be provided so that objects presented on the composite screen may be moved about and otherwise manipulated freely without regard to the fact that different portions of the objects are actually displayed on different physical display devices. In other words, the different physical display devices comprising the composite screen must be controlled in concert so that they present the illusion of one large logical screen to the viewer. This kind of functionality has become known as xe2x80x9csingle logical screenxe2x80x9d functionality, or simply xe2x80x9cSLS.xe2x80x9d One solution for providing single logical screen functionality in an X Window System environment is taught by Jeffrey J. Walls, Ian A. Elliott and John Marks in U.S. Pat. No. 6,088,005, filed Jan. 10, 1996, titled xe2x80x9cA Design and Method for a Large, Physical Workspacexe2x80x9d (hereinafter xe2x80x9cWalls, et al.xe2x80x9d), which pattent application is hereby incorporated by reference entirely.
By way of background, the X Window System is a standard for implementing window-based user interfaces in a networked computer system. For a more detailed discussion of the X Window System and the X Protocol that defines it, see Adrian Nye, X Protocol Reference Manual Volume Zero (O""Reilly and Associates 1990). FIG. 1 illustrates a conventional X Window System configuration that does not implement single logical screen functionality. Host computer system 100 is coupled to host computer system 102 via connections to local area network (xe2x80x9cLANxe2x80x9d) 104. Host computer system 102 drives display hardware 106 via bus 108 and is capable of receiving input from devices such as a keyboard 109, a mouse 111 or other devices such as a button box 113. X client software 110 runs on host 100, while X server software 112 runs on host 102. Although configurations of client 110 may vary, a typical client would comprise an application 114 that communicates with server 112 by means of calls to low-level library Xlib 116. Optionally, Xlib 116 may be augmented by a higher-level library such as XToolkit 118. The purpose of X server 112 is to implement a user interface on display hardware 106 responsive to commands received from X client 110 and input devices 109, 111 and 113. A conventional X server 112 includes three basic components: a device independent X (xe2x80x9cDIXxe2x80x9d) layer 120, an operating system (xe2x80x9cOSxe2x80x9d) layer 122, and a device dependent X (xe2x80x9cDDXxe2x80x9d) layer 124. DIX layer 120 contains the parts of the server software that are portable from one hardware/OS implementation to another. OS layer 122 implements server functions that vary with specific operating systems. DDX layer 124 implements server functions that depend on the capabilities of particular graphics hardware and input devices. For a more detailed discussion of conventional X server 112, see, Elias Israel and Erik Fortune, The X Window System Server (Digital Press 1992) (hereinafter xe2x80x9cIsrael and Fortunexe2x80x9d).
FIG. 2 illustrates an X Window System configuration that implements single logical screen functionality according to the teaching of Walls, et al. In the configuration of FIG. 2, augmented X server software 200 runs on host computer 220. X server 200 controls multiple display hardware devices 202, 204, 208 and 208 via buses 203, 205, 207 and 209. This capability is accomplished by the addition of a single-logical-screen (xe2x80x9cSLSxe2x80x9d) layer 210 to X server 200, as well as a separate DDX layer 212, 214, 216 and 218 for each of the display hardware devices. An advantage of the configuration of FIG. 2 is that single logical screen functionality is provided in a way that is transparent to X Client 110. In other words, the single logical screen functionality provided by X Server 200 enables X Client 110 to function as though it were communicating with one large, high-resolution device. The overhead required to provide the high-resolution single logical screen functionality using several smaller-resolution devices is subsumed entirely within X server 200.
The configuration of FIG. 2 does have limitations, however. One of the challenges associated with implementing a very large single logical screen display is that many physical display devices are required to implement the composite screen. Moreover, each of the physical display devices in the composite screen is usually driven by a separate graphics hardware subsystem. Typically, each such graphics hardware subsystem resides on a graphics circuit card (or cards), which must be installed in a bus socket (or sockets) on the backplane of a host computer system. Unfortunately, there is a physical limit to the number of graphics circuit cards that may be installed into the bus sockets that are provided on a single backplane. While special-purpose backplanes have been built that are capable of receiving as many as nine graphics circuit cards at once, such special-purpose implementations are expensive. The backplanes in more conventional computer systems are only able to receive about four graphics circuit cards for 2D hardware, and fewer than four cards for 3D hardware. (3D graphics circuit cards can require three or more bus slots per card.)
One way of addressing the need for having many graphics circuit cards when attempting to implement a very large single logical screen display would be to use numerous computer systems to support the composite screen. In this manner, numerous backplanes would be provided for receiving the graphics circuit cards (one backplane per computer system). Moreover, each of the computer systems used to support the larger logical screen could be configured like computer system 220 shown in FIG. 2. Unfortunately, the configuration shown in FIG. 2 is only transparent to X client 110 when X server 200 manages the entire logical screen. Therefore, if multiple computer systems 220 were used in order to create a larger logical screen, with each of the computer systems 220 running a separate X server 200, then X client 110 would have to assume a degree of the overhead required to implement the SLS functionality for the larger composite screen.
It is therefore an object of the present invention to provide 2D SLS functionality for very large composite screens in a manner that is transparent to the X client.
It is a further object of the invention to provide such 2D SLS functionality in a manner that enables multiple backplanes to be used for implementing very large composite screens.
In an exemplary embodiment, the invention provides a single logical screen display system distributed over a network. A client process runs on one host, a master server process runs on another host, and several slave server processes run on slave hosts. The master server process maintains network connections with the client process and with each of the slave server processes. The client process issues single logical screen window system requests to the master server process, and the master server process issues physical screen window system requests to the slave server processes. Each slave server process controls one of a plurality of physical display devices. The plural physical display devices comprise a composite display on which the single logical screen appears.
In a preferred embodiment, the master and slave server processes are modified X servers. The master server process communicates with each of the slave server processes using both X protocol and a new xe2x80x9cwalXxe2x80x9d extension to the X protocol. The walX extension protocol enables DIX/DDX interface functions to be performed over the network between the DIX layer in the master server process and a DDX layer in a slave server process. In the master server process, this ability is provided by a new xe2x80x9cWALxe2x80x9d layer that effectively replaces the DDX layer in the master server. The slave server processes are conventional X servers, except that they also support the new walX extension.
The arrangement is unique from a number of perspectives: First, the WAL layer in the master server works in concert with each of the slave servers to present the appearance of a conventional DDX layer to the master""s DIX layer. Second, and more specifically, the WAL layer works in concert with the walX extensions in the slave servers so that, at various times, each slave DDX layer may be made to appear to the master server as though the slave DDX layer were the master""s missing DDX layer. Third, the WAL layer presents the appearance of a client to each of the slave servers.
A primary benefit provided by the inventive configuration is that, from the point of view of the client process, the master server and slave servers look like a single server that commands a large, high-resolution display. Thus, single logical screen capability is provided in a manner that is xe2x80x9ctransparentxe2x80x9d to the client process. (The client process need not assume any of the overhead associated with controlling plural display hardware devices individually.) Another benefit provided by the inventive configuration is that it overcomes the above-described limitation on the number of graphics cards and monitors that can be used to construct the composite screen. In the inventive configuration, multiple backplanes (one per host computer) may be used to provide the number of bus sockets necessary to create a very large composite screen.